package com.breaktian.assemble.livedatabus;

import android.arch.lifecycle.LifecycleOwner;
import android.arch.lifecycle.Observer;
import android.support.annotation.NonNull;


public interface ISubscribe<T> {
    void send(T value);

    void sendDelay(T value, long delay);

    void subscribe(@NonNull LifecycleOwner owner, @NonNull Observer<T> observer);

    void subscribeSticky(@NonNull LifecycleOwner owner, @NonNull Observer<T> observer);

    void subscribeForever(@NonNull Observer<T> observer);

    void subscribeStickyForever(@NonNull Observer<T> observer);

    void removeSubscriber(@NonNull Observer<T> observer);
}
